
File format:

*.stab format (barcodes.stab, primers.stab): <unique id><tab><sequence>
primers.stab - IDs must be "5primer"  and "3primer" 
barcodes.stab - IDs are not used. Sequences must be unique

-----------------------------------------------------------


element/context file: Name<tab>Type<tab>SubType<tab>Strength<tab>Orientation<tab>Sequence
Strength - "Strong" / "Weak" - the affinity of the site
Orientation "plus" / "minus" - orientation
The combination of name,Strength and Orientation must be unique

-----------------------------------------------------------


vector file - 
<vector name><tab><vector size><tab><minimum coordinate><tab><maximum coordinate>
coordinate "-1" means that the element will not be included in the construct

-----------------------------------------------------------

Construct set file defines how the elemnets, contexts and vector files are used to create the library.
The file is written in a synthax as in the example.

Each "SET" defines a cartesian product between each 
CONTEXT and all the alternative options defined by each element lines.
Each context line define one possible context.
Each element define a set of possible elements (separated by ",") in all possible positions of the given vectors (separated by ",")
Tip: "-1" coordinate in a vector allow to create constructs in which the element is not included 


There are some syntaxs that allow a more complex functionality:

SET	<set name>	DuplicateNum=<# number of duplicates>
creates duplicates for each promoter. This is usefull for having similar promoters with duplicate barcodes
 
MULTIMUTATION_<#base pairs>_RandomDNA_<# variants> - create several radom DNA mutation variants on defined length. Each variants will be an alternative element.
PSSM_MUTATION_<# X base pairs>_<# K variants>;<element name> - create K mutation variantes for each X base pairs position in the defined element

MULTIPLE_SITES_UPTOFROMSTART2STEP_<#step>_<# max sites>;<element name> - create cluster of sites by felling the positions of the vector in order definded by the step (step of 2 - fill any second site first)
MULTIPLE_SITES_ALLGROUPOFSIZES_<# min sites>_<# max sites>;<element name> - create all possible combination of clusters with the given range of binding sites.

Adding more functionalities to the code is easy

